package configure

import (
	"os"

	"gitee.com/xiaoyutab/xgotool/individual/xginplus"
)

// 检测目录是否存在
//
//	POST	admin/system/configure/check_dir
func CheckDir(c *xginplus.Context) *xginplus.Response {
	type temp_struct struct {
		Dir string `json:"dir" form:"dir" xml:"dir"` // 待检测目录
	}
	temp := temp_struct{}
	if err := c.Bind(&temp); err != nil {
		return c.Error(err)
	}
	type temp_struct_used struct {
		Dir string // 待检测目录
	}
	param := temp_struct_used{}
	// 参数赋值
	param.Dir = temp.Dir
	// ApiPost软件所需要的参数描述格式:
	// [{"is_checked":1,"not_null":1,"key":"dir","type":"Text","field_type":"String","value":"","description":"待检测目录"}]
	// ApiFox软件所需要的参数描述格式:（此软件需要的参数为多行形式，请手动去除最前面的//和空格，再行复制）
	// "dir","string","true","","","待检测目录"
	// 其他软件所需要的KV键值对描述:
	// {"dir":"待检测目录"}
	// 本命令执行参数【留做备份，以便后期使用/修改】
	// dir string 待检测目录 v=required x.ginplus
	// 参数效验部分
	if param.Dir == "" {
		return c.Errorf("待检测目录(dir) 不能为空")
	}

	// 此上为控制器的参数验证逻辑，代码生成：https://xiaoyutab.cn/#/tool/go/cpp
	fs, err := os.Stat(param.Dir)
	if err != nil {
		return c.Errorf("待检测目录(%s)不存在", param.Dir)
	}
	if !fs.IsDir() {
		return c.Errorf("待检测目录(%s)不是目录", param.Dir)
	}
	return c.SuccessEmpty()
}
